home *** CD-ROM | disk | FTP | other *** search
/ PC Play 129 / pc play 129.iso / Demo / man2 / man2.exe / data / scripts / stransport_alien_scripts.lua < prev    next >
Encoding:
Text File  |  2006-08-31  |  8.2 KB  |  208 lines

  1.  
  2. function units_stransport_alien_setup()
  3.     units_setup_sea(4,true,true,ENET_EFFECT_GEOMETRY_SEATRANSPORTALIENSHADOW)
  4. end
  5.  
  6. function units_stransport_alien_resetup()
  7.     units_setup_sea(4,true,false,ENET_EFFECT_GEOMETRY_SEATRANSPORTALIENSHADOW)
  8. end
  9.  
  10. function units_stransport_alien_select()
  11.     units_select(22)
  12. end
  13.  
  14. function units_stransport_alien_unselect()
  15.     units_unselect()
  16. end
  17.  
  18. function units_stransport_alien_selectenemy()
  19.     uniGetExecutor():addSimpleEffect(ENET_EFFECT_SELECTEDGEOMETRY_ENEMY)
  20. end
  21.  
  22. function units_stransport_alien_damaged()
  23.     uniGetExecutor():applyDamage(uniGetLife())
  24. end
  25.  
  26. function units_stransport_alien_highlight()
  27.     uniGetExecutor():addEffectWithRadius(ENET_EFFECT_GEOMETRY_HIGHLIGHT,15)
  28. end
  29.  
  30. function units_stransport_alien_explode()
  31.     units_explode_water2()
  32. end
  33.  
  34. function units_stransport_alien_move()
  35.     local unit = uniGetExecutor()
  36.     local sound = unit:play3DSound("seatransport_move.wav",1)
  37.     local steps = unit:addSimpleEffect(ENET_EFFECT_PS_SEATRANSPORT_WATERTRAY)
  38.     waitDeath(unit:addRotationEffect(ENET_EFFECT_ROTATE_UNIT,MATH_PI * 0.7))
  39.     waitDeath(unit:addMoveEffect(ENET_EFFECT_MOVE_LINEAR,80))
  40.     steps:suspendedDestroy(1.0)
  41.     sound:destroy()
  42. end
  43.  
  44. function units_stransport_alien_fire()
  45. end
  46.  
  47. function units_stransport_alien_load()
  48.     local unit = uniGetExecutor()
  49.     local cargo = uniGetTarget()
  50.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  51.     waitDeath(unit:parabolicTargetting(cargo))
  52.     unit:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  53.     unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  54.     unit:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  55.     cargo:setVisibility(true,false)
  56.     uniSetPosition(unit:getBone(ENBT_FIRE1):getWorldPosition())
  57.     units_load_shrink(cargo)
  58.     local ground = units_addGround(unit,ENET_STRANSPORTALIEN_GROUND)
  59.     local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
  60.     cargo:terminateCommand()
  61.     cargo:executeCommand(ENC_INSIDE,true)
  62.     while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
  63.     cargo:setTransformOwner(units_findfreefirespot(unit,1))
  64.     unit:setCurrentAnimationRepeatCount(0)
  65.     cargo:setVisibility(false,false)
  66.     cargo:terminateCommand()
  67. end
  68.  
  69. function units_stransport_alien_unload()
  70.     local unit = uniGetExecutor()
  71.     local cargo = uniGetTarget()
  72.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  73.     local pos = uniGetPosition()
  74.     waitDeath(unit:parabolicTargetting(pos))
  75.     unit:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  76.     unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  77.     unit:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  78.     local ground = units_addGround(unit,ENET_STRANSPORTALIEN_GROUND)
  79.     cargo:setLocalOrientation(0,1,0,0,0,-1)
  80.     cargo:setTransformOwner()
  81.     cargo:setScale(0.4,0.4,0.4)
  82.     cargo:setVisibility(true,false)
  83.     local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
  84.     cargo:terminateCommand()
  85.     cargo:executeCommand(ENC_INSIDE,true)
  86.     while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
  87.     units_unload_growth(cargo)
  88.     cargo:setVisibility(true,true)
  89.     unit:setCurrentAnimationRepeatCount(0)
  90.     cargo:terminateCommand()
  91. end
  92.  
  93. function units_stransport_alien_transfer()
  94.     local unit = uniGetExecutor()
  95.     local cargo = uniGetTarget()
  96.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  97.     local from = cargo:getTransformOwner():getTransformOwner()
  98.     local fromType = from:getEffectType()
  99.     units_waitCommandByUID(from,unit:getCurrentCommandUID() - 2)    
  100.     if(fromType == ENET_UNIT_HELICOPTER_ALIEN) then
  101.         waitDeath(from:parabolicTargetting(unit))
  102.         cargo:setTransformOwner()
  103.         units_stransport_alien_load()
  104.         from:setCurrentAnimationRepeatCount(0)
  105.         from:terminateCommand()
  106.     elseif(fromType == ENET_UNIT_LANDTRANSPORT_ALIEN or fromType == ENET_UNIT_SEATRANSPORT_ALIEN) then
  107.         waitDeath(from:parabolicTargetting(unit))
  108.         from:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  109.         from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  110.         from:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  111.         local g_type = ENET_STRANSPORTALIEN_GROUND
  112.         if(fromType == ENET_UNIT_LANDTRANSPORT_ALIEN) then g_type = ENET_LTRANSPORTALIEN_GROUND end
  113.         local ground = units_addGround(from,g_type)
  114.         cargo:setLocalOrientation(0,1,0,0,0,-1)
  115.         cargo:setTransformOwner()
  116.         cargo:setScale(0.4,0.4,0.4)
  117.         units_stransport_alien_load()
  118.         from:setCurrentAnimationRepeatCount(0)
  119.         from:terminateCommand()
  120.     elseif(fromType == ENET_UNIT_PLATFORM_ALIEN) then
  121.         waitDeath(from:parabolicTargetting(unit))
  122.         from:addAnimationToQueue(ENAT_IDLETIMEOUT1,1)
  123.         from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  124.         from:addAnimationToQueue(ENAT_IDLETIMEOUT2,1)
  125.         local ground = units_addGround(from,ENET_PLATFORM_GROUND_ALIEN)
  126.         cargo:setTransformOwner()
  127.         units_stransport_alien_load()
  128.         from:setCurrentAnimationRepeatCount(0)
  129.         from:terminateCommand()
  130.     else
  131.         consoleWrite("attempt to reload from unknown transport type!!!")
  132.     end
  133. end
  134.  
  135. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_MOVE,"units_stransport_alien_move")
  136. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_FIRE1,"units_stransport_alien_fire")
  137. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_FIRE2,"units_stransport_alien_fire")
  138. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_SELECT,"units_stransport_alien_select")
  139. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_SELECTENEMY,"units_stransport_alien_selectenemy")
  140. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_UNSELECT,"units_stransport_alien_unselect")
  141. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_SETUP,"units_stransport_alien_setup")
  142. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_RESETUP,"units_stransport_alien_resetup")
  143. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_DAMAGED,"units_stransport_alien_damaged")
  144. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_EXPLODE,"units_stransport_alien_explode")
  145. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_HIGHLIGHT,"units_stransport_alien_highlight")
  146. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_TRANSFER,"units_stransport_alien_transfer")
  147. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_LOAD,"units_stransport_alien_load")
  148. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_UNLOAD,"units_stransport_alien_unload")
  149. registerCommand(ENSCRIPTSET_SEATRANSPORT_ALIEN,ENC_INSIDE,"units_inside")
  150.  
  151. -- make description of unit
  152. desc = getEffectDescriptionP(ENET_UNIT_SEATRANSPORT_ALIEN)
  153. desc.ClassID = ENCLASS_MESHINSTANCE
  154. desc.EffectClassType = ENECT_GEOMETRY
  155. desc.FileName = "seatransport_alien.rmd"
  156. desc.ScriptSet = ENSCRIPTSET_SEATRANSPORT_ALIEN
  157. desc.MoveType = ENMOVE_SWIM
  158. desc.RenderType = ENRENDERTYPE_GEOMETRY
  159. desc.Material = ENMAT_RIGIDSKINNEDMESH
  160. desc.MaterialColors = units_materialcolors_human
  161. desc.isPlacesVisible = false
  162.  
  163. -- shadow
  164. desc = getEffectDescriptionP(ENET_EFFECT_GEOMETRY_SEATRANSPORTALIENSHADOW)
  165. desc.ClassID = ENCLASS_MESHINSTANCE
  166. desc.EffectClassType = ENECT_GEOMETRY
  167. desc.FileName = "seatransport_alien_shadow.rmd"
  168. desc.RenderType = ENRENDERTYPE_SHADOW
  169. desc.Material = ENMAT_SHADOW
  170. desc.MaterialColors = units_materialcolors_shadow
  171.  
  172. -- register new unit to logic
  173. unitDesc = logic_getUnitDescP(23)
  174. unitDesc.group = 1
  175. unitDesc.order = 10
  176. unitDesc.unit_res_id = ENET_UNIT_SEATRANSPORT_ALIEN
  177. unitDesc.unit_icon_id = "Seatransport_a_small_normal.dds"
  178. unitDesc.active_id = "Seatransport_a_small_active.dds"
  179. unitDesc.pressed_id = "Seatransport_a_small_pressed.dds"
  180. unitDesc.big_icon_id = "Seatransport_a_big_normal.dds"
  181. unitDesc.small_icon_id = "Seatransport_l_stats.dds"
  182. unitDesc.HP = 4
  183. unitDesc.MP = 60
  184. unitDesc.WR = 0
  185. unitDesc.min_WR = 0
  186. unitDesc.WD = 0
  187. unitDesc.WR2 = 0
  188. unitDesc.min_WR2 = 0
  189. unitDesc.WD2 = 0
  190. unitDesc.ability = 3
  191. unitDesc.transport = 4
  192. unitDesc.value = 2
  193. unitDesc.race = 1
  194. unitDesc.fire_pause = 1.0
  195. unitDesc.move_pause = 3.0
  196. unitDesc.unit_info_scale = 0.04
  197. unitDesc.scn_name = "NTRANSPA"
  198.  
  199.  
  200. ------------------------------------------------------------------------------------------
  201. ------------------------------------------------------------------------------------------
  202. ------------------------------------------------------------------------------------------
  203. desc = getEffectDescription(ENET_EFFECT_GEOMETRY_VEGETATION_FURPALM)
  204. desc.FileName = "stransport_alien_ground.smd"
  205. desc.effectUsageType = ENEUT_GENERIC
  206. desc.Geometry.isCollisionable = true
  207. changeEffect(ENET_STRANSPORTALIEN_GROUND,desc)
  208.